Attention is first drawn to FIG. 1 illustrating a schematic illustration of a system 100 for accessing data in an external virtual memory. The system includes one or more hosts 101-1 to 101-n, hosting each, one or more applications (not shown) and coupled to a storage system 102 for accessing data residing in an external storage system. The data resides in volumes (denoted VS, not shown in FIG. 1) of external virtual memory (say in virtual disk units 104-1 to 104-n).
An application (not shown) in Host 101-1 accesses a volume of external virtual memory 104-2 through a handle being for example ITL where I stands for initiator port say 108-1 and T stands for a target port say (109-2) and L stands for LUN say 110-1. As is well known, the host may employ a plurality of initiator ports each of which is associated to one or more applications. The virtual memory may employ a plurality of target ports typically according to the number of volumes stored in the virtual memory where each pair of corresponding initiator port and target port is connected by means of unique Logical Unit Number—LUN. Thus, for example, initiator port 108-n and target port 109-(n−1) are connected through unique LUN (110 n−1). The specified volumes may represent respective snapshots (each volume representing one or more snapshot) of data of a primary volume associated with the host.
There are also shown host management modules 103-i each associated with its respective host 101-i operating under the control of Storage manager module 107 (possibly with the intervention of human storage administrator) for providing handles viewed by the volumes and by the applications. It is thus evident that for an application to access data (utilizing an access protocol command, say SCSI), in a volume of virtual memory, an ITL that associates the application and the volume is utilized. The volume is viewable to the application by associating the handle (e.g. ITL) to the application by an application viewable volume Vh allowing the application to access the associated volume. Note that the syntax of Vh is operating system specific. For MS windows operating systems for example, Vh is typically of the form X: where X can be any single alphabet letter.
Whenever an application wants to access a given volume, it must request the storage manager 107 (possibly through intervention of the human storage administrator) to allocate an ITL for associating a given initiator port of the application in the host to a target port of the designated volume in the virtual external memory. The application will access the specified given volume by means of the application viewable volume Vh. The description with reference to FIG. 1 exemplifies a mechanism by which a host (e.g. 101-1) accesses volumes in an external virtual memory 102.
It should be noted that Storage pools is a mechanism used by storage administrators (e.g. manager 107) to monitor and control storage allocation to hosts, most typically in the case of volumes with snapshots or of thin volumes. A storage manager allocates a storage pool in accordance with the size of the storage quota to be allocated for a particular user, which accesses the system via a host or via a group of hosts. The storage pool forms part of storage system 102 (e.g. a storage pool residing in virtual disk unit 104-1 or spread across more than one virtual disk unit 104-i). All volumes for this user are allocated then by the storage manager 107 from this storage pool. This is particularly useful in the case of snapshots, because while one can anticipate the amount of snapshots to be created by the user, it is difficult to anticipate the rate of change of data in the source after any snapshot is created, and accordingly it is difficult to anticipate the amount of additional storage space that will be needed as new data is created as part of the snapshot mechanism. Hence, the pools provide a flexible way to manage the space allocated to a certain user. When the space in the pool is depleted no more data can be allocated for volumes associated with the pool and no new volumes can be created which use space associated with this pool. At this point the storage manager/administrator may free some space by deleting some volumes or snapshots, increase the pool size or abort the new data allocation.
The storage manager 107 (administrator) is also in charge of imposing security rules, for instance authorizing or denying access of the host to given volumes/snapshots (e.g. residing in storage pools).
Storage pools allow a flexible allocation of storage space particularly in this case of volumes with snapshots. Using pools, together with other techniques which are well known in the art, a user can create snapshots and use space which was allocated in the pool with no need to interact with the storage manager. However, if the user wants to access one of the snapshots that were created, this access requires the creation of an ITL as explained above. In the prior art this requires human interaction and agreement between the host administrator and the storage administrator, thus curtailing the flexibility that was provided by the use of pools. This limitation is partially alleviated with the help of an external virtualization agent such as a Veritas volume manager.
Using this solution, a large volume can be allocated to a user and this user can, using virtualization technologies, divide this volume into sub-volumes, allocate the sub-volume to applications, and also work with pools in a similar way to that specified above. However, such solutions have their own limitations, adding a new agent that requires attention, consumes resources and affects performance.
There is a need in the art to provide for a new method for host based storage management.
Prior art references considered to be relevant as a background to the presently disclosed subject matter are listed below. Acknowledgement of the references herein is not to be inferred as meaning that these are in any way relevant to the patentability of
U.S. Pat. No. 6,954,768 discloses a method, system, and article of manufacture for pooling of storage. Volume attributes are assigned to a plurality of physical volumes. Pool attributes are assigned to a plurality of storage pools, wherein the pool attributes include policies for borrowing and returning the plurality of physical volumes to and from the plurality of storage pools. One of the plurality of physical volumes is allocated to one of the plurality of storage pools based on the volume attributes of the one of the plurality of physical volumes and the pool attributes of the one of the plurality of storage pools.
the presently disclosed subject matter disclosed herein:
U.S. Pat. No. 7,783,847 discloses a computer readable medium comprising executable instructions for reallocating blocks in a storage pool, which when executed by a processor performs a method, the method comprising: copying a plurality of source blocks to a plurality of replacement blocks, wherein the plurality of source blocks is stored on a source disk in the storage pool, and wherein the plurality of replacement blocks is stored on at least one replacement disk in the storage pool; generating a first indirection object, wherein the first indirection object comprises a mapping of locations of the plurality of source blocks to locations of the plurality of replacement blocks; modifying a replacement block selected from the plurality of replacement blocks using a copy-on-write transaction; and removing a reference to the replacement block from the first indirection object once the copy-on-write transaction is complete.
U.S. Pat. No. 5,584,008 discloses an external storage system connected to a host apparatus includes a plurality of storage devices, and a control unit for controlling the above described plurality of storage devices, wherein the above described control unit manages a storage space formed by the above described plurality of storage devices by dividing the storage space into a first storage pool to be directly accessed by the above described host apparatus and a second storage pool not to be directly accessed by the above described host apparatus.
US2004/0153606 discloses systems and methods which include among other things, systems for providing a block level data storage service. More particularly, the systems and methods of the invention provide a block level data storage service that provides differentiated pools of storage on a single storage device. To this end, the systems and methods described herein leverage the different performance characteristics across the logical block name (LBN) space of the storage device (or devices). These different performance characteristics may be exploited to support two or more classes of storage on a single device.
U.S. Pat. No. 5,673,382 discloses a data processing system providing disaster recovery and using a client-server configuration which includes a method and apparatus for reclaiming off-site storage volumes without requiring the volumes to be mounted or transported to the primary site. The system includes primary volumes and resident copy volumes at the primary site and off-site storage volumes for disaster recovery at the remote site. The system first determines which off-site storage volumes are eligible for reclamation. For each eligible off-site volume, the system locates, within the primary site, a primary copy of every file remaining on the off-site volume that is still required for disaster recovery. These primary copies are then copied to a resident recovery volume at the primary storage site. The eligible off-site volume is then marked empty, and the resident recovery volume is classified as an off-site volume. The resident recovery volume is then transported to the remote storage site and the empty off-site volume is returned to the primary storage site to be reused as a resident copy volume.